package cn.itcast.service.impl;

import cn.itcast.dao.PermissionDao;
import cn.itcast.entity.PageResult;
import cn.itcast.pojo.Permission;
import cn.itcast.service.PermissionService;
import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

@Service
@Transactional
public class PermissionServiceImpl implements PermissionService {

    @Autowired
    private PermissionDao permissionDao;

    /**
     *
     * @param menuIds
     * @return
     */
    @Override
    public ArrayList<Permission> selectMenuIdorPermission(Integer[] menuIds) {
        ArrayList<Permission> list=new ArrayList<>();
        for (Integer menuId : menuIds) {
            Integer[] arr=permissionDao.selectPermission(menuId);
            if (arr!=null&&arr.length>0){
                for (Integer arrs : arr) {
                    //集合添加权限信息
                    Permission permission = permissionDao.findById(arrs);
                    list.add(permission);
                }
            }
        }
        return list;
    }


    /**
     * 查询所有的权限信息  根据关键词查询检索查询
     * @param currentPage
     * @param pageSize
     * @param queryString
     * @return
     */
    @Override
    public PageResult findAllPermission(Integer currentPage, Integer pageSize, String queryString) {

        PageHelper.startPage(currentPage, pageSize);

//        Page<Permission> page = new Page<>(currentPage, pageSize);
        Page<Permission> page= permissionDao.findAllPermission(queryString);

        return new PageResult(page.getTotal(),page.getResult());
    }


    /**
     * 添加新权限
     * @param permission
     */
    @Override
    public void addPermission(Permission permission) {
        permissionDao.addPermission(permission);
    }



    /**
     * 根据权限id 查询权限
     * @param id
     * @return
     */
    @Override
    public Permission findPermissionByPermissionId(Integer id) {

        Permission permission= permissionDao.findPermissionByPermissionId(id);

        return permission;
    }

    @Override
    public List<Permission> findAllPermission() {

        return permissionDao.findAll();
    }

//    @Override
//    public List<Permission> findAllPermission() {
//        return permissionDao.findAll();
//    }



    /**
     * 更新权限信息
     * @param permission
     */
    @Override
    public void updatePermission(Permission permission) {
        permissionDao.updatePermission(permission);

    }


    /**
     * 删除权限信息
     * @param id
     */
    @Override
    public String deletePermissionById(Integer id) {
        //首先查询t_role_permission表中的 对应permissionid 是否存在 如果 如果存在 就不删除
        List<Integer> ids= permissionDao.CheckRoleAssociation(id);
        if(ids.size()>0){
            return "此权限已经被角色使用 请先删除对应的角色";
        }
        //首先查询t_menu_permissionn表中的 对应permissionid 是否存在 如果 如果存在 就不删除
        List<Integer> ids2= permissionDao.CheckMENUAssociation(id);
        if(ids2.size()>0){
            return "此权限已经被菜单使用 请先删除对应的菜单";
        }


        permissionDao.deletePermission(id);

        return "删除成功";




    }


}
